Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dump: implement cycle handling in has_backedge_to_worklist #46749

Merged
merged 1 commit into from
Sep 21, 2022

Conversation

vtjnash
Copy link
Sponsor Member

@vtjnash vtjnash commented Sep 13, 2022

This changes the algorithm for walking the backedges graph slightly to correctly resolve cycles, using the algorithm described for inference-convergence at: https://juliacomputing.com/blog/2017/05/inference-converage2/

@vtjnash vtjnash merged commit d4f0567 into master Sep 21, 2022
@vtjnash vtjnash deleted the jn/dump-backedge-cycles branch September 21, 2022 13:01
vtjnash added a commit that referenced this pull request Sep 27, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that.

This uses the same algorithm now as #46749 for cycle convergence.
vtjnash added a commit that referenced this pull request Sep 27, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that.

This uses the same algorithm now as #46749 for cycle convergence.
vtjnash added a commit that referenced this pull request Sep 27, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that.

This uses the same algorithm now as #46749 for cycle convergence.
vtjnash added a commit that referenced this pull request Oct 4, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. This also avoids needing to interact with
backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.
vtjnash added a commit that referenced this pull request Oct 4, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. This also avoids needing to interact with
backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.
vtjnash added a commit that referenced this pull request Oct 4, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. This also avoids needing to interact with
backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.
vtjnash added a commit that referenced this pull request Oct 4, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. This also avoids needing to interact with
backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.
timholy pushed a commit that referenced this pull request Oct 5, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. Validation is performed while they are represented
as forward edges, so avoids needing to interact with backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.
vtjnash added a commit that referenced this pull request Nov 29, 2022
vtjnash added a commit that referenced this pull request Nov 29, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. Validation is performed while they are represented
as forward edges, so avoids needing to interact with backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.

(cherry picked from commit fbd5a72)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant